﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace vue
{
    public partial class DialogueRechercheAvancee : Form
    {

        private List<Modele.Balise> balises;
        private List<System.Drawing.Bitmap> images_balises;
        private List<System.Windows.Forms.Button> buttons;
        private List<System.Windows.Forms.Label> labels;
        private int index = -1;

        public DialogueRechercheAvancee(List<Modele.Balise> _balises ,List<System.Drawing.Bitmap> _images_balises)
        {
            balises = _balises;
            images_balises = _images_balises;
            buttons = new List < System.Windows.Forms.Button >();
            labels = new List<System.Windows.Forms.Label>();
            InitializeComponent();
            this.miseAjour();
            this.Refresh();
        }
        //mise à jour
        public void miseAjour()
        {
            System.Drawing.Size taille = button2.Size;
            IEnumerator it = images_balises.GetEnumerator();
            IEnumerator it2 = balises.GetEnumerator();
            //ajout de la balise par defaut
            it.MoveNext();
            it2.MoveNext();

            buttons.Add(button2);
            System.Drawing.Bitmap image_tampon = (System.Drawing.Bitmap)it.Current;
            image_tampon = new System.Drawing.Bitmap(image_tampon, taille);

            button2.BackgroundImage = image_tampon;
            //mise a jour du label
            System.Windows.Forms.Label label_suivant;
            semantique_balise.Text = ((Modele.Balise)it2.Current).getSemantique().getSignification();
            labels.Add(semantique_balise);

            System.Windows.Forms.Button button_precedent = button2; // sauvegarde du boutton précédent pour la recopie
            System.Windows.Forms.Button button_suivant;

            
            int hauteurGlobal = this.Size.Height;
            int largueurGlobal = this.Size.Width;
            int localisation_x;
            int localisation_y;
            int marge = 20;
            int delta=0;

            while (it.MoveNext())
            {
                it2.MoveNext();

                button_suivant = new Button();
                button_suivant.Size = button_precedent.Size;

                localisation_x = button_precedent.Location.X;
                localisation_y = button_precedent.Location.Y;

                delta=marge+button_precedent.Size.Width;

                if (localisation_x + 2 * delta > largueurGlobal)
                    {
                        localisation_x = marge;
                        localisation_y += delta;
                    }
                else
                    {
                        localisation_x += delta;
                    }
                //positionnement
                button_suivant.Location=new System.Drawing.Point(localisation_x,localisation_y);
               

                //ajout de l'image de la balise et redimensionnement
                button_suivant.BackgroundImage = new System.Drawing.Bitmap((System.Drawing.Bitmap)it.Current , button_suivant.Size);
                button_suivant.Click += new EventHandler(button2_Click);
                panel1.Controls.Add(button_suivant);

                //mise a jour du label
                label_suivant = new Label();
                label_suivant.Location = new Point(localisation_x, localisation_y + button_precedent.Size.Width);
                panel1.Controls.Add(label_suivant); // ajout à la fenetre
                label_suivant.Text = ((Modele.Balise)it2.Current).getSemantique().getSignification();





                button_precedent = button_suivant;
                buttons.Add(button_suivant);
            }
        }
            
        private void DialogueRechercheAvancee_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
           index=buttons.IndexOf((Button)sender);

           Console.WriteLine("button selectionné d'index : {0} ", index);

           Close();
        }

        public static int selectionnerBalise(List<Modele.Balise> _balises, List<System.Drawing.Bitmap> _images_balises)
        {
            DialogueRechercheAvancee input = new DialogueRechercheAvancee(_balises, _images_balises);


            if (input.ShowDialog() != DialogResult.OK)
            {
                return input.getIndex(); //return l'index de la balises selectionnée ou -1 si boutton annulé utilisé
            }
            else
            {
                return -1;
            }
        }

        public int getIndex()
        {
            return index;
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }
    }
}
